﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0058)http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD id=ctl00_Head><TITLE>WPF 性能分析工具</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8"><LINK 
id=ctl00_HeaderLink href="WPF 性能分析工具.files/Msdn10-bn20091211.css" type=text/css 
rel=stylesheet><LINK href="WPF 性能分析工具.files/Msdn10.ie6-bn20091211.css" 
type=text/css rel=stylesheet>
<META 
content=http://msdn.microsoft.com/zh-cn/architecture(d=default)/aa969767(l=zh-cn,v=VS.90).aspx 
name=NormalizedUrl>
<META 
content=http://msdn.microsoft.com/zh-cn/architecture(d=default)/aa969767(l=zh-cn,v=VS.90).aspx 
name=VotingContextUrl>
<META content=NOINDEX,NOFOLLOW name=ROBOTS>
<META content="B9D26F3F-9:56:31 PM" name=MN>
<META content=zh-cn name=ms.locale>
<META content=aa969767 name=Search.ShortId><!-- Looking for metadata? Use the robot view instead http://currentsite/currenturl(robot).aspx --><LINK 
href="WPF 性能分析工具.files/CAYN4PE7.css" type=text/css rel=stylesheet></LINK><LINK 
media=print href="/zh-cn/architecture/aa969767(printer).aspx" rel=alternate>
<META content="MSHTML 6.00.2900.5897" name=GENERATOR></HEAD>
<BODY class=MsdnPageBody id=ctl00_MTPS_Body dir=ltr>
<FORM id=aspnetForm name=aspnetForm action=aa969767.aspx method=post>
<DIV><INPUT id=flag type=hidden value=false name=flag> <INPUT id=__EVENTTARGET 
type=hidden name=__EVENTTARGET> <INPUT id=__EVENTARGUMENT type=hidden 
name=__EVENTARGUMENT> <INPUT id=__VIEWSTATE type=hidden 
value=/wEPDwUBMGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFImN0bDAwJE1hc3RoZWFkJFNlYXJjaCRTZWFyY2hCdXR0b25pGDPKlIV4WUXFA74Qc4U2A1boQA== 
name=__VIEWSTATE> </DIV>
<SCRIPT type=text/javascript>
//<![CDATA[
var theForm = document.forms['aspnetForm'];
if (!theForm) {
    theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</SCRIPT>

<SCRIPT src="WPF 性能分析工具.files/WebResource.axd" type=text/javascript></SCRIPT>

<SCRIPT type=text/javascript>
//<![CDATA[
var CurUserId="AxUFAAAAAAC3CAAAyIkPb6xN3OIVR2+t760eXA!!";var ClientURL="http%3a%2f%2fmsdn.microsoft.com%2fzh-cn%2farchitecture(d%3ddefault)%2faa969767(l%3dzh-cn%2cv%3dVS.90).aspx";var maxRating=5;var RatingObjId="ctl00_tb1_Flyout_Rating1";var tbCommentsId="ctl00_tb1_Flyout_tbComments";var PageId="aa969767";var pageTag="contentRatingaa969767VS.90zh-cn";var sendBtnId="ctl00_tb1_Flyout_btnSend";var curRating="2";var contentRated=false;var RatingTooltipText="请单击星形符号并提供反馈";var RatedTooltipText="您已经为此内容评级。感谢您的反馈。";var userIPAddress="124.72.10.253";var MtpsPageDirection="ltr";var RatingFlyoutID="ctl00_tb1_Flyout";var Rating_Device="default";var CCI_DeleteConfirmationText="是否确实要删除？";function wkAddNewItemClick(){CCE_EditAnnotation(-1);};
var CCS_AddLinkID="ctl00_WikiContent_Add";var CCS_User="";var CCS_ContentUrl="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx";//]]>
</SCRIPT>

<SCRIPT src="WPF 性能分析工具.files/jquery-1.2.6-bn20091211.js" 
type=text/javascript></SCRIPT>

<SCRIPT src="WPF 性能分析工具.files/Silverlight-bn20091211.js" 
type=text/javascript></SCRIPT>

<SCRIPT type=text/javascript>
//<![CDATA[
var wt_nvr_ru = "WT_NVR_RU";var wt_fpcdom = ".microsoft.com";var wt_domlist = "msdn.microsoft.com";var wt_pathlist = "";var wt_paramlist = "DCSext.mtps_devcenter";var wt_siteid = "MSDN";var gDomain="m.webtrends.com";
var gDcsId="dcsmgru7m99k7mqmgrhudo0k8_8c6m";
var gFpc="WT_FPC";
/*<![CDATA[*/
if(document.cookie.indexOf(gFpc+"=")==-1){document.write("<scr"+"ipt type='text/javascript' src='"+"http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+gDomain+"/"+gDcsId+"/wtid.js"+"'><\/scr"+"ipt>");}
/*]]>*/
var detectedLocale = 'zh-cn';
var wtsp="_architecture_";
var gTrackEvents = 0;
var omni_guid='07f4df63-c0b8-4b0c-aa16-2f4e272d9e38';//]]>
</SCRIPT>

<SCRIPT language=JavaScript 
src="WPF 性能分析工具.files/omni_rsid_msdn-bn20091211.js"></SCRIPT>
<NOSCRIPT><A title="Web Analytics" href="http://www.omniture.com/"><IMG height=1 
alt="" src="WPF 性能分析工具.files/0.gif" width=1 border=0></A></NOSCRIPT>
<SCRIPT type=text/javascript>
//<![CDATA[
var CCT_Browse="浏览其他包含此标记的主题";var CCT_Remove="从本主题删除该标记";var CCT_NoTags="未输入任何标记";var CCT_Error="发生错误";var CCT_BugTag="contentbug";var CCE_ErrSameContent = "内容尚未更改";
var CCE_ErrEmptyTitle = "标题不能为空";
var CCE_ErrEmptyContent = "内容不能为空";
var CCE_ErrTitleTooLong = "标题不得超过 100 个字符";
var CCE_ErrContentTooLong = "内容不得超过 50,000 个字符";
var CCE_ErrServerError = "保存您的数据时出错。";
var CCE_IsEditing=false;var CCE_IsTaggingEnabled=true;var CCE_TitleMaxLen=100;var CCE_ContentMaxLen=50000;var CCE_UpdateText="请稍候";//]]>
</SCRIPT>

<SCRIPT src="WPF 性能分析工具.files/compositejscript2.js" 
type=text/javascript></SCRIPT>
 
<DIV><INPUT id=__PREVIOUSPAGE type=hidden 
value=XeR4tuxqcLUvnLdO8-8Ms4LhpljAaCY0EdV725QjdNIr-ZjKStNYqPP-S4HEym-J0 
name=__PREVIOUSPAGE> </DIV>
<SCRIPT type=text/javascript>
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ctl00$ScriptManager', document.getElementById('aspnetForm'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['fctl00$WikiContent$ctl00$ItemUpdatePanel'], [], [], 90);
//]]>
</SCRIPT>

<DIV id=Msdn10Background>
<DIV id=JelloSizer>
<DIV id=JelloExpander>
<DIV id=JelloWrapper>
<DIV class=Clear></DIV>
<DIV class=Masthead>
<DIV class=BrandLogo id=ctl00_Masthead_brandLogo><A id=ctl00_Masthead_brandlink 
title="MSDN Solution Architecture Center" 
href="http://msdn.microsoft.com/zh-cn/architecture/default.aspx">MSDN Solution 
Architecture Center</A> </DIV>
<DIV class=Search>
<DIV class=SearchBox id=ctl00_Masthead_Search_SearchBox><INPUT 
class=TextBoxSearch id=ctl00_Masthead_Search_SearchTextBox title="搜索 MSDN" 
name=ctl00$Masthead$Search$SearchTextBox> <INPUT class=SearchButton 
id=ctl00_Masthead_Search_SearchButton title=单击此处开始搜索 
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" 
type=image alt=单击此处开始搜索 src="WPF 性能分析工具.files/clear.gif" 
name=ctl00$Masthead$Search$SearchButton> <SPAN class=Bing></SPAN>
<SCRIPT id=mscom.srch.searchBox src="WPF 性能分析工具.files/SearchBox.jss" defer 
type=text/javascript></SCRIPT>
</DIV></DIV>
<DIV class=GlobalBar>
<DIV class=PassportScarab id=ctl00_Masthead_passportScarab><A id=idPPScarab 
onclick="MtpsLoginStatus.OverlayImagePath = &quot;http://i.msdn.microsoft.com:80/Platform/Controls/StoMtpsLoginStatus/resources/veil.gif&quot;; return MtpsLoginStatus.DoPassportSignIn('http://login.live.com/login.srf?wa=wsignin1.0&amp;rpsnv=11&amp;ct=1262757391&amp;rver=6.0.5276.0&amp;wp=MCLBI&amp;wlcxt=msdn%24msdn%24msdn&amp;wreply=http:%2F%2Fmsdn.microsoft.com%2FPlatform%2FControls%2FStoMtpsLoginStatus%2FPassport%2Fppsignin.htm&amp;lc=2052&amp;id=254354');" 
href="http://login.live.com/login.srf?wa=wsignin1.0&amp;rpsnv=11&amp;ct=1262757391&amp;rver=6.0.5276.0&amp;wp=MCLBI&amp;wlcxt=msdn%24msdn%24msdn&amp;wreply=http:%2F%2Fmsdn.microsoft.com%2Fzh-cn%2Farchitecture%2Faa969767.aspx&amp;lc=2052&amp;id=254354"><SPAN 
class=MTPS_GlobalToolbarLinks_msdn id=idPPScarabSIT>登录</SPAN></A> 
<DIV id=idPPMWOverlay style="DISPLAY: none"></DIV></DIV>
<DIV class=LocaleFlyout>
<DIV id=MainDiv onmouseover=FlyoutPopupShow() onmouseout=FlyoutPopupHide()>
<DIV id=FlyoutTop><A class=LocaleManagementFlyoutStaticLink 
id=ctl00_Masthead_LocaleManagement_linkCountryLanguage 
style="DISPLAY: inline-block; WIDTH: 150px">中国 - 简体中文&nbsp;</A> <IMG 
class=LocaleManagementFlyoutPopArrow id=img_Arrow 
src="WPF 性能分析工具.files/clear.gif"> </DIV>
<DIV class=LocaleManagementFlyoutPopup id=FlyoutPopup>
<TABLE width=150 border=0>
  <TBODY>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Arg 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Arg','')">Argentina 
      (Español)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Bra 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Bra','')">Brasil 
      (Português)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_CanE 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_CanE','')">Canada 
      (English)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_CanF 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_CanF','')">Canada 
      (Français)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Chi 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Chi','')">中国 
      (简体中文)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Col 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Col','')">Colombia 
      (Español)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Deu 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Deu','')">Deutschland 
      (Deutsch)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Esp 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Esp','')">España 
      (Español)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Fra 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Fra','')">France 
      (Français)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Ind 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Ind','')">India 
      (English)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Ita 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Ita','')">Italia 
      (Italiano)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Jpa 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Jpa','')">日本 
      (日本語)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Kor 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Kor','')">한국 
      (한국어)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Mex 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Mex','')">México 
      (Español)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Per 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Per','')">Perú 
      (Español)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Рос 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Рос','')">Россия 
      (Pусский)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_Tai 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_Tai','')">台灣 
      (繁體中文)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_UK 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_UK','')">United 
      Kingdom (English)</A></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_US 
      href="javascript:__doPostBack('ctl00$Masthead$LocaleManagement$lkbtn_US','')">United 
      States (English)</A></TD></TR>
  <TR>
    <TD class=LocaleManagementFlyoutPopupHr></TD></TR>
  <TR>
    <TD><A id=ctl00_Masthead_LocaleManagement_lkbtn_More 
      href='javascript:WebForm_DoPostBackWithOptions(new%20WebForm_PostBackOptions("ctl00$Masthead$LocaleManagement$lkbtn_More",%20"",%20false,%20"",%20"/zh-cn/ms376822.aspx",%20false,%20true))'>更多 
      </A></TD></TR></TBODY></TABLE></DIV></DIV></DIV>
<DIV class=Clear></DIV>
<DIV class=UserName id=ctl00_Masthead_ProfileLink_UserName></DIV></DIV>
<DIV class=Clear></DIV>
<DIV class=NetworkLogo id=ctl00_Masthead_networkTagLineArea><A 
id=ctl00_Masthead_networkLink 
href="http://msdn.microsoft.com/zh-cn/default.aspx"><IMG 
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" 
src="WPF 性能分析工具.files/logo_msdn.gif"></A> </DIV>
<DIV class=leftcap></DIV>
<DIV class=internav>
<DIV id=ctl00_Masthead_tabs_manTabsHolder><A id=ctl00_Masthead_tabs_ctl01 
onclick="javascript:Track('|TabStrip Link|ctl00_Masthead_tabs_ctl00|ctl00_Masthead_tabs_ctl01',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/default.aspx">架构师中心</A><A 
id=ctl00_Masthead_tabs_ctl03 
onclick="javascript:Track('|TabStrip Link|ctl00_Masthead_tabs_ctl02|ctl00_Masthead_tabs_ctl03',this);" 
href="http://msdn.microsoft.com/zh-cn/flash/default.aspx">MSDN Flash</A><A 
id=ctl00_Masthead_tabs_ctl05 
onclick="javascript:Track('|TabStrip Link|ctl00_Masthead_tabs_ctl04|ctl00_Masthead_tabs_ctl05',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/aa718325.aspx">Visual Studio 
2005</A></DIV></DIV>
<DIV class=rightcap></DIV>
<DIV class=Clear></DIV></DIV>
<DIV class=Clear></DIV>
<DIV class=topleftcorner></DIV>
<DIV class=toprightcorner></DIV>
<DIV class=alley>
<DIV class=wrapper>
<DIV class=inner>
<DIV class=Clear></DIV>
<DIV class=EyebrowContainer id=ctl00_EyebrowMenu_EyebrowContainer><SPAN 
class=EyebrowElement>&nbsp;WPF 性能分析工具</SPAN></DIV>
<DIV class=Clear></DIV>
<DIV id=ctl00_MtpsContentPanel>
<DIV class=topic>
<DIV class=majorTitle>Windows Presentation Foundation 工具<!----></DIV>
<DIV class=title>WPF 性能分析工具<!----></DIV><!--
      Content type: Devdiv1. Transform: orcas2mtps.xslt.
    -->
<DIV id=mainSection>
<DIV id=mainBody>
<P>
<P><SPAN style="COLOR: darkgray">更新：2007 年 11 月</SPAN></P>
<DIV class=introduction>
<P>WPF 提供了一套性能分析工具，来帮助您分析应用程序的运行时行为，并确定可以应用的性能优化的类型。下表列出了 Windows SDK 工具 WPFPerf 
中包括的五个性能分析工具：</P>
<DIV class=caption><!----></DIV>
<DIV class=tableSection>
<TABLE width="50%" frame=lhs>
  <TBODY>
  <TR>
    <TH>
      <P><B>工具</B></P></TH>
    <TH>
      <P><B>说明</B></P></TH></TR>
  <TR>
    <TD>
      <P>Perforator（分析器）</P></TD>
    <TD>
      <P>用于分析呈现行为。</P></TD></TR>
  <TR>
    <TD>
      <P>Visual Profiler（可视化探查器）</P></TD>
    <TD>
      <P>用于按可视化树中的元素分析 WPF 服务（如布局和事件处理）的使用情况。</P></TD></TR>
  <TR>
    <TD>
      <P>Working Set Analyzer（工作集分析器）</P></TD>
    <TD>
      <P>用于分析应用程序的工作集特征。</P></TD></TR>
  <TR>
    <TD>
      <P>Event Trace（事件跟踪）</P></TD>
    <TD>
      <P>用于分析事件并生成事件日志文件。</P></TD></TR>
  <TR>
    <TD>
      <P>ETW Trace Viewer（ETW 跟踪查看器）</P></TD>
    <TD>
      <P>以 WPF 用户界面的格式记录、显示和浏览 Windows 事件跟踪 (ETW) 
日志文件。</P></TD></TR></TBODY></TABLE></DIV>
<P></P>
<P>本主题包括下列各节。</P>
<UL>
  <LI><A id=ctl00_mainContentContainer_ctl01 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl01',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx#using_performance_profiling_tools">使用性能分析工具</A>
  <LI><A id=ctl00_mainContentContainer_ctl02 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl02',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx#perforator">Perforator（分析器）</A>
  <LI><A id=ctl00_mainContentContainer_ctl03 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl03',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx#visual_profiler">可视化探查器</A>
  <LI><A id=ctl00_mainContentContainer_ctl04 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl04',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx#working_set_viewer">Working 
  Set Analyzer（工作集分析器）</A>
  <LI><A id=ctl00_mainContentContainer_ctl05 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl05',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx#event_trace">Event 
  Trace（事件跟踪）</A>
  <LI><A id=ctl00_mainContentContainer_ctl06 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl06',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx#etw_trace_viewer">ETW 
  Trace Viewer（ETW 跟踪查看器）</A>
  <LI><A id=ctl00_mainContentContainer_ctl07 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl00|ctl00_mainContentContainer_ctl07',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx#other_performance_tool_resources">其他性能工具资源</A>
  <LI><A 
  href="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx#seeAlsoSection">相关主题</A></LI></UL></DIV><A 
name=using_performance_profiling_tools><!----></A><SPAN>
<DIV class=MTPS_CollapsibleRegion>
<DIV class=CollapseRegionLink><!-- ApplyClick with current id --><IMG 
class=LibC_o 
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; VERTICAL-ALIGN: middle; BORDER-RIGHT-WIDTH: 0px" 
src="WPF 性能分析工具.files/clear.gif"> &nbsp;使用性能分析工具 </DIV>
<DIV class=MTPS_CollapsibleSection style="DISPLAY: block"><A 
name=sectionToggle0><!----></A>
<P>安装了 Windows SDK 后，可以选择安装 Windows SDK 性能套件。</P>
<DIV class=alert>
<TABLE width="100%">
  <TBODY>
  <TR>
    <TH align=left><IMG class=note title=说明 
      src="WPF 性能分析工具.files/Aa969767.alert_note(zh-cn,VS.90).gif"><B>说明：</B></TH></TR>
  <TR>
    <TD>
      <P>在安装该性能套件之前，请移除 WPFPerf.exe 的较旧版本。</P></TD></TR></TBODY></TABLE></DIV>
<P>第一次运行 WPFPerf 时，会出现<SPAN class=ui>“Add Tool”</SPAN>（添加工具）对话框：</P><SPAN 
class=media>
<DIV class=caption>“Add Tool”（添加工具）对话框</DIV><BR><IMG alt=“添加工具”对话框 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_01(zh-cn,VS.90).png"></SPAN>
<P>选择要使用的工具，并单击<SPAN class=ui>“OK”</SPAN>（确定）。</P>
<DIV class=alert>
<TABLE width="100%">
  <TBODY>
  <TR>
    <TH align=left><IMG class=note title=说明 
      src="WPF 性能分析工具.files/Aa969767.alert_note(zh-cn,VS.90).gif"><B>说明：</B></TH></TR>
  <TR>
    <TD>
      <P>为了使用性能分析工具，您的用户帐户在运行时必须具有管理访问权限。</P></TD></TR></TBODY></TABLE></DIV></DIV></DIV></SPAN><A 
name=perforator><!----></A><SPAN>
<DIV class=MTPS_CollapsibleRegion>
<DIV class=CollapseRegionLink><!-- ApplyClick with current id --><IMG 
class=LibC_o 
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; VERTICAL-ALIGN: middle; BORDER-RIGHT-WIDTH: 0px" 
src="WPF 性能分析工具.files/clear.gif"> &nbsp;Perforator（分析器） </DIV>
<DIV class=MTPS_CollapsibleSection style="DISPLAY: block"><A 
name=sectionToggle1><!----></A>
<P>Perfortor（分析器）是一种用于分析呈现行为的性能分析工具。Perfortor（分析器）主窗口显示了一组选项，您可以利用这些选项来分析应用程序各部分中非常具体的呈现行为。</P><SPAN 
class=media>
<DIV class=caption>Perfortor（分析器）主窗口</DIV><BR><IMG alt="Perforator 主窗口" 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_Perforator_01(zh-cn,VS.90).png"></SPAN>
<P>您可以使用 Perfortor（分析器）设置多个选项，这些选项会影响应用程序的实时呈现行为。</P>
<DIV class=caption><!----></DIV>
<DIV class=tableSection>
<TABLE width="50%" frame=lhs>
  <TBODY>
  <TR>
    <TH>
      <P><B>选项</B></P></TH>
    <TH>
      <P><B>说明</B></P></TH></TR>
  <TR>
    <TD>
      <P>Draw software rendering with purple tint（用紫色色调绘制软件呈现）</P></TD>
    <TD>
      <P>用紫色绘制采用软件呈现管道所呈现的所有区域。这包括软件呈现目标、软件三维内容以及逐基元软件回退。</P></TD></TR>
  <TR>
    <TD>
      <P>Clear back-buffer before rendering（呈现之前清除后台缓冲区）</P></TD>
    <TD>
      <P>在每次绘制操作之前清除应用程序窗口。</P></TD></TR>
  <TR>
    <TD>
      <P>Show dirty region update overlay（显示已更新区域更新覆盖）</P></TD>
    <TD>
      <P>使 WPF 对屏幕进行的每次更新都通过重新着色进行指示。这样，您将能在应用程序中看到何时在何处重绘了区域。</P></TD></TR>
  <TR>
    <TD>
      <P>Disable dirty region support（禁用已更新区域支持）</P></TD>
    <TD>
      <P>使 WPF 每当发生更改便重绘整个窗口。通常，只会重绘已更改的窗口部分。启用此选项将使应用程序的呈现速度大为减慢。</P></TD></TR>
  <TR>
    <TD>
      <P>Disable Opacity effects（禁用不透明度效果）</P></TD>
    <TD>
      <P>禁用某些可能会造成性能下降的不透明度效果。</P></TD></TR>
  <TR>
    <TD>
      <P>禁用逐基元软件回退（Disable per-primitive software fallback）</P></TD>
    <TD>
      <P>为各个呈现基元禁用软件回退。无法禁用软件中间呈现目标和其他软件呈现。</P></TD></TR>
  <TR>
    <TD>
      <P>禁用高质量图像重新缩放（Disable high-quality image rescaling）</P></TD>
    <TD>
      <P>禁止将大图像重新缩放为较小尺寸。</P></TD></TR>
  <TR>
    <TD>
      <P>禁用三维呈现（Disable 3D rendering）</P></TD>
    <TD>
      <P>禁用所有三维呈现操作</P></TD></TR></TBODY></TABLE></DIV>
<H3 class=subHeading>“Enable Debug Control Option”（启用调试控制）选项</H3>
<DIV class=subsection>
<P>利用<SPAN class=ui>“Enable Debug Control”（启用调试控制）</SPAN>复选框，您可以允许或禁止访问 WPF 
共享内存。默认情况下，Perfortor（分析器）在启动时会启用此选项，并在终止时禁用此选项。当 Perfortor（分析器）异常终止时，请重新启动 
Perfortor（分析器），并手动取消选中<SPAN class=ui>“Enable Debug 
Control”（启用调试控制）</SPAN>复选框以禁止访问 WPF 共享内存。然后，重新启动 Perfortor（分析器）和所分析的 WPF 
应用程序。</P>
<DIV class=alert>
<TABLE width="100%">
  <TBODY>
  <TR>
    <TH align=left><IMG class=note title=说明 
      src="WPF 性能分析工具.files/Aa969767.alert_note(zh-cn,VS.90).gif"><B>说明：</B></TH></TR>
  <TR>
    <TD>
      <P>在运行 WPF 应用程序时，启用此选项可能会使内存使用量小幅增长，并可能会使性能小幅下降。您应确保 
      Perfortor（分析器）正确地禁用了此选项。</P></TD></TR></TBODY></TABLE></DIV>
<H4 class=subHeading>注册表项设置</H4>
<DIV class=subsection>
<P><SPAN class=ui>“Enable Debug Control”（启用调试控制）</SPAN>复选框添加或删除 WPF 
注册表项设置。若要手动添加注册表项设置，请从命令窗口中运行以下命令：</P>
<P><SPAN class=code>reg add HKLM\SOFTWARE\Microsoft\Avalon.Graphics /v 
EnableDebugControl /t REG_DWORD /d 1 /f</SPAN></P>
<P>若要手动删除注册表项设置，请从命令窗口中运行以下命令：</P>
<P><SPAN class=code>reg delete HKLM\SOFTWARE\Microsoft\Avalon.Graphics /v 
EnableDebugControl /f</SPAN></P></DIV></DIV>
<H3 class=subHeading>使用 Perfortor（分析器）</H3>
<DIV class=subsection>
<P>若要使用 Perfortor（分析器），请启动您想要分析其呈现行为的 WPF 应用程序。启动了应用程序后，在 Perfortor（分析器）中单击<SPAN 
class=ui>“Refresh”（刷新）</SPAN>按钮。应用程序现在应出现在 WPF 
应用程序的“分析器”（Perforator）列表框中。选择想要分析的应用程序和呈现选项。Perfortor（分析器）数据值（比如帧速率）将立即反映应用程序的呈现行为。</P><SPAN 
class=media>
<DIV class=caption>选中了应用程序和呈现选项的 Perfortor（分析器）</DIV><BR><IMG 
alt="选定了选项的 Perforator 主窗口" 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_Perforator_02(zh-cn,VS.90).png"></SPAN>
<P>下面的屏幕快照显示启用了“Draw software rendering with purple tint”（用紫色色调绘制软件呈现）和“Show 
dirty region support”（显示已更新区域支持）呈现选项的 PhotoDemo 示例应用程序：</P><SPAN class=media>
<DIV class=caption>PhotoDemo 示例应用程序显示呈现行为</DIV><BR><IMG 
alt="显示 Perforator 呈现选项的 Photodemo 应用程序" 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_Perforator_03(zh-cn,VS.90).png"></SPAN>
<P>以下各节讨论呈现中涉及到的主要性能问题，以及如何借助 Perfortor（分析器）选项和数据输出诊断这些问题。</P></DIV>
<H3 class=subHeading>避免软件呈现</H3>
<DIV class=subsection>
<P>由于 WPF 硬件呈现管道比其软件呈现管道要快很多，因此，用软件呈现的应用程序 UI 
越少，该应用程序中的呈现速度就越快。通常，用软件呈现区域所花费的时间与呈现的像素数量成比例，因此，要小心使用软件管道呈现的较大区域；较小的区域影响不大。</P>
<P>下面是可帮助检测软件呈现问题的 Perfortor（分析器）选项：</P>
<UL>
  <LI>
  <P><B>Draw software rendering with purple 
  tint（用紫色色调绘制软件呈现）：</B>用紫色绘制采用软件呈现管道所呈现的所有区域。这包括软件呈现目标、软件三维内容以及逐基元软件回退。</P>
  <LI>
  <P><B>Num Software Render Targets（软件呈现目标数）：</B>计算完全以软件方式运行的全窗口呈现目标的数量。如果计数不为 
  0，则表示有显著的性能问题（通常与计算机配置或分层窗口的存在有关）。确保启用了 Microsoft Direct3D（运行 <SPAN 
  class=code>dxdiag</SPAN>），确保所有监视器的位深度都设置为 32每像素位数 (BPP)，并确保图形卡受 Microsoft 
  DirectX 9.0 支持。</P>
  <LI>
  <P><B>Num Hardware Render 
  Targets（硬件呈现目标数）：</B>计算以硬件方式运行的全窗口呈现目标的数量。此数量应等于应用程序的窗口数乘以显示适配器数。这指示只要在可能时就对应用程序使用硬件加速。</P></LI></UL></DIV>
<H3 class=subHeading>避免使用大量的中间呈现目标</H3>
<DIV class=subsection>
<P><B><I>中间呈现目标</I></B>是 WPF 为了准备好将内容绘制到屏幕上而必须绘制的一些额外的图像。</P>
<UL>
  <LI>
  <P><B>Maximum SW/HW IRTs per Frame（每帧的最大 SW/HW IRT 
  数）：</B>显示要应用以呈现应用程序任何一帧的软件或硬件中间呈现目标的最大数量。通常，导致中间呈现目标出现的原因，是由于对 <SPAN 
  target="T:System.Windows.Media.Visual" sdata="cer"><A 
  id=ctl00_mainContentContainer_ctl46_ctl00_ctl00 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl46_ctl00_contenthere|ctl00_mainContentContainer_ctl46_ctl00_ctl00',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/system.windows.media.visual.aspx">Visual</A></SPAN> 
  使用了 <SPAN target="T:System.Windows.Media.DrawingBrush" sdata="cer"><A 
  id=ctl00_mainContentContainer_ctl46_ctl00_ctl01 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl46_ctl00_contenthere|ctl00_mainContentContainer_ctl46_ctl00_ctl01',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/system.windows.media.drawingbrush.aspx">DrawingBrush</A></SPAN>、<SPAN 
  target="T:System.Windows.Media.VisualBrush" sdata="cer"><A 
  id=ctl00_mainContentContainer_ctl46_ctl00_ctl02 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl46_ctl00_contenthere|ctl00_mainContentContainer_ctl46_ctl00_ctl02',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/system.windows.media.visualbrush.aspx">VisualBrush</A></SPAN>、<SPAN 
  target="P:System.Windows.Media.Brush.Opacity" sdata="cer"><A 
  id=ctl00_mainContentContainer_ctl46_ctl00_ctl03 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl46_ctl00_contenthere|ctl00_mainContentContainer_ctl46_ctl00_ctl03',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/system.windows.media.brush.opacity.aspx">Opacity</A></SPAN>，或对 
  <SPAN target="T:System.Windows.Media.TileBrush" sdata="cer"><A 
  id=ctl00_mainContentContainer_ctl46_ctl00_ctl04 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl46_ctl00_contenthere|ctl00_mainContentContainer_ctl46_ctl00_ctl04',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/system.windows.media.tilebrush.aspx">TileBrush</A></SPAN> 
  使用了平铺模式。如果此数字很大，则可能表明 WPF 运行时正在执行大量的工作来呈现应用程序。</P></LI></UL></DIV>
<H3 class=subHeading>有用的性能度量值</H3>
<DIV class=subsection>
<UL>
  <LI>
  <P><B>Dirty Rect Addition rate（已更新矩形加入速率）：</B>指示正在应用程序中触发快速更新。</P>
  <LI>
  <P><B>Frame rate（帧速率）：</B>报告应用程序呈现到屏幕的速率。对于没有动画的应用程序，此值应接近于 
  0，因为已更新区域优化应避免绘制（除非在必要时才绘制）。将此数字视为估计值。</P>
  <LI>
  <P><B>Estimated video memory usage（估计视频内存使用量）：</B>跟踪 WPF 
  直接进行的大量视频内存分配（纹理和呈现目标）。它不会跟踪给定视频驱动程序在呈现过程中进行的分配、由于编译和加载像素或顶点着色器而导致的分配，或者顶点或索引缓冲区的分配。请注意，如果超出可用的纹理内存量，将通常会导致 
  WPF 呈现逻辑变为软件逻辑，并且请注意，多显示器（多监视器）会使应用程序需要的视频内存量成倍增长。</P></LI></UL></DIV>
<H3 class=subHeading>已更新区域支持</H3>
<DIV class=subsection>
<P>由于 Windows Presentation Foundation (WPF) 
只会根据需要更新窗口的各部分，因此，随时显现正在更新的窗口部分将很有帮助。以下选项可帮助显现更新行为。</P>
<UL>
  <LI>
  <P><B>Show dirty region update overlay（显示已更新区域更新覆盖）：</B>使 WPF 
  对屏幕进行的每次更新都通过重新着色进行指示。这样，您将能看到何时在运行的应用程序中重绘了哪些区域。</P>
  <LI>
  <P><B>Clear Back Buffer Before Rendering（呈现之前清除后台缓冲区）：</B>在每次绘制操作之前清除窗口。</P>
  <LI>
  <P><B>Disable dirty region support（禁用已更新区域支持）：</B>使 WPF 
  在任何时候发生任何更改时重绘整个窗口，而不是只重绘已更改的窗口部分。这对于强制更新整个窗口可能很有用，但请注意：启用此选项将导致应用程序的呈现速度大大减慢。</P></LI></UL></DIV>
<H3 class=subHeading>禁用呈现功能</H3>
<DIV class=subsection>
<P>您可以使用 Perfortor（分析器）禁用某些性能密集型操作，以确定这些操作是否导致应用程序中出现瓶颈。</P>
<UL>
  <LI>
  <P><B>Disable Opacity 
  effects（禁用不透明度效果）：</B>禁用某些可能会造成性能下降的不透明度效果。为了在总体上避免这种性能问题，请考虑在低级别对象（比如 <SPAN 
  target="T:System.Windows.Media.Brush" sdata="cer"><A 
  id=ctl00_mainContentContainer_ctl46_ctl00_ctl05 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl46_ctl00_contenthere|ctl00_mainContentContainer_ctl46_ctl00_ctl05',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/system.windows.media.brush.aspx">Brush</A></SPAN>）上设置不透明度，而不是在高级别对象（比如 
  <SPAN target="T:System.Windows.Controls.Button" sdata="cer"><A 
  id=ctl00_mainContentContainer_ctl46_ctl00_ctl06 
  onclick="javascript:Track('ctl00_mainContentContainer_ctl46_ctl00_contenthere|ctl00_mainContentContainer_ctl46_ctl00_ctl06',this);" 
  href="http://msdn.microsoft.com/zh-cn/architecture/system.windows.controls.button.aspx">Button</A></SPAN>）上设置。</P>
  <LI>
  <P><B>Disable per-primitive software 
  fallback（禁用逐基元软件回退）：</B>为各个呈现基元禁用软件回退。无法禁用软件中间呈现目标和其他软件呈现。</P>
  <LI>
  <P><B>Disable high-quality image rescaling（禁用高质量图像重新缩放）：</B>如果大图像以较小尺寸显示，WPF 
  会重新缩放大图像以使效果更好。此操作是性能密集型操作，特别是在具有以缩小尺寸在屏幕上显示的许多大图像的应用程序中更是如此。利用此选项可以禁用这种重新缩放行为，以确定它是否是性能问题的来源。为了避免此行为，请考虑将图像解码为接近图像显示尺寸的大小。</P>
  <LI>
  <P><B>Disable 3D 
rendering（禁用三维呈现）：</B>禁用所有三维呈现操作。</P></LI></UL></DIV></DIV></DIV></SPAN><A 
name=visual_profiler><!----></A><SPAN>
<DIV class=MTPS_CollapsibleRegion>
<DIV class=CollapseRegionLink><!-- ApplyClick with current id --><IMG 
class=LibC_o 
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; VERTICAL-ALIGN: middle; BORDER-RIGHT-WIDTH: 0px" 
src="WPF 性能分析工具.files/clear.gif"> &nbsp;可视化探查器 </DIV>
<DIV class=MTPS_CollapsibleSection style="DISPLAY: block"><A 
name=sectionToggle2><!----></A>
<P>可视化探查器是一种性能工具，用于按可视化树中的元素分析 WPF 
服务（如布局和事件处理）的使用情况。通过分析此工具的分析输出，可以确定应用程序中的哪些可视元素可能引起性能瓶颈。可视化探查器主窗口显示一组选项，您可以利用这些选项来指定要如何分析应用程序：</P>
<UL>
  <LI>
  <P>Update Interval（更新间隔）。要在分析过程中使用的时间间隔。</P>
  <LI>
  <P>Display Overlay（显示覆盖）。显示覆盖选项允许您显示 CPU 资源使用量 — 暗红色的覆盖指示较大的 CPU 
  资源使用量。</P></LI></UL>
<H3 class=subHeading>可视化分析的值</H3>
<DIV class=subsection>
<P>WPF 可视化探查器在基本构造块的上下文中显示性能问题，这些构造块用于在应用程序中构造可视场景。这些构造块包括高级别对象（比如 <SPAN 
target="T:System.Windows.Controls.Button" sdata="cer"><A 
id=ctl00_mainContentContainer_ctl47_ctl00_ctl00 
onclick="javascript:Track('ctl00_mainContentContainer_ctl47_ctl00_contenthere|ctl00_mainContentContainer_ctl47_ctl00_ctl00',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/system.windows.controls.button.aspx">Button</A></SPAN> 
和 <SPAN target="T:System.Windows.Controls.TextBlock" sdata="cer"><A 
id=ctl00_mainContentContainer_ctl47_ctl00_ctl01 
onclick="javascript:Track('ctl00_mainContentContainer_ctl47_ctl00_contenthere|ctl00_mainContentContainer_ctl47_ctl00_ctl01',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/system.windows.controls.textblock.aspx">TextBlock</A></SPAN> 
控件）以及低级别对象（比如 <SPAN target="T:System.Windows.Shapes.Line" sdata="cer"><A 
id=ctl00_mainContentContainer_ctl47_ctl00_ctl02 
onclick="javascript:Track('ctl00_mainContentContainer_ctl47_ctl00_contenthere|ctl00_mainContentContainer_ctl47_ctl00_ctl02',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/system.windows.shapes.line.aspx">Line</A></SPAN> 
和 <SPAN target="T:System.Windows.Shapes.Ellipse" sdata="cer"><A 
id=ctl00_mainContentContainer_ctl47_ctl00_ctl03 
onclick="javascript:Track('ctl00_mainContentContainer_ctl47_ctl00_contenthere|ctl00_mainContentContainer_ctl47_ctl00_ctl03',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/system.windows.shapes.ellipse.aspx">Ellipse</A></SPAN> 
元素）。可视化探查器使用可视化对象表示形式描述性能问题，而不是用函数名称调用关系图来描述这些问题。此方式与 Windows SDK 工具 UI Spy 
表示信息的方式类似。有关更多信息，请参见 <SPAN sdata="link"><A 
id=ctl00_mainContentContainer_ctl47_ctl00_ctl04 
onclick="javascript:Track('ctl00_mainContentContainer_ctl47_ctl00_contenthere|ctl00_mainContentContainer_ctl47_ctl00_ctl04',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/ms727247.aspx">UI Spy 
(UISpy.exe)</A></SPAN>。</P>
<P>为了分析各种 WPF 性能问题，必须要了解基础 WPF 服务的角色和范围。这些服务包括布局、呈现和动画。可视化探查器以图形方式呈现 WPF 
服务在应用程序对象间的分配方式。例如，当可视化探查器显示应用程序对象的可视化树时，它会在对象上覆盖不同的红色色调，以便表示对象正在使用的相对资源量。用暗红色覆盖显示的对象表示这样一个对象：它所使用的资源比例比用淡红色覆盖显示的对象高。更重要的是，可视化探查器提供了对象所消耗特定 
WPF 资源量的细目分类。</P></DIV>
<H3 class=subHeading>使用可视化探查器</H3>
<DIV class=subsection>
<P>若要使用可视化探查器，请单击<SPAN class=ui>“Start Profiling”（开始分析）</SPAN>按钮，并选择<SPAN 
class=ui>“Launch”（启动）</SPAN>或<SPAN class=ui>“Attach”（附加）</SPAN>。为了使用<SPAN 
class=ui>“Attach”（附加）</SPAN>选项，WPFPerf 
和所分析的应用程序都必须以管理访问权限运行。同样，覆盖功能处于禁用状态，因此可用于<SPAN 
class=ui>“Attach”（附加）</SPAN>选项的事件较少。<SPAN 
class=ui>“Launch”（启动）</SPAN>选项是推荐选项。</P>
<P>“Events”（事件）选项卡使您能够选择要分析的应用程序和元素事件。</P>
<P>您可以设置可视化探查器配置，以便允许或禁止分析下列应用程序事件。这些事件是由方法名（后跟括在括号中的类名）表示的方法。例如，<SPAN 
class=ui>“Tick (TimeManager)”</SPAN>表示 <SPAN sdata="langKeyword" 
value="TimeManager.Tick"><SPAN class=keyword>TimeManager.Tick</SPAN></SPAN> 
方法。</P>
<DIV class=caption><!----></DIV>
<DIV class=tableSection>
<TABLE width="50%" frame=lhs>
  <TBODY>
  <TR>
    <TH>
      <P><B>应用程序事件</B></P></TH>
    <TH>
      <P><B>说明</B></P></TH></TR>
  <TR>
    <TD>
      <P>RenderMessageHandler (MediaContext)</P></TD>
    <TD>
      <P>启动呈现传递。调用 <SPAN sdata="langKeyword" value="TimeManager.Tick"><SPAN 
      class=keyword>TimeManager.Tick</SPAN></SPAN> 和 <SPAN sdata="langKeyword" 
      value="MediaContext.Render"><SPAN 
      class=keyword>MediaContext.Render</SPAN></SPAN> 及其他方法。</P></TD></TR>
  <TR>
    <TD>
      <P>Rendering Thread</P></TD>
    <TD>
      <P>对呈现线程执行呈现指令时发生。这对于检测呈现绑定的应用程序十分有用。</P></TD></TR>
  <TR>
    <TD>
      <P>Layout</P></TD>
    <TD>
      <P>在度量、排列和呈现传递过程中发生。</P></TD></TR>
  <TR>
    <TD>
      <P>UpdateRealizations</P></TD>
    <TD>
      <P>在更新文本和位图效果的内部位图表示形式时发生。</P></TD></TR>
  <TR>
    <TD>
      <P>Tick (TimeManager)</P></TD>
    <TD>
      <P>在动画运行时发生。此事件可以触发动画呈现器处理程序。</P></TD></TR>
  <TR>
    <TD>
      <P>UpdateEffectiveValue (DependencyObject)</P></TD>
    <TD>
      <P>在属性引擎更改 <SPAN target="T:System.Windows.DependencyProperty" 
      sdata="cer"><A id=ctl00_mainContentContainer_ctl47_ctl00_ctl05 
      onclick="javascript:Track('ctl00_mainContentContainer_ctl47_ctl00_contenthere|ctl00_mainContentContainer_ctl47_ctl00_ctl05',this);" 
      href="http://msdn.microsoft.com/zh-cn/architecture/system.windows.dependencyproperty.aspx">DependencyProperty</A></SPAN> 
      的值时发生。</P></TD></TR>
  <TR>
    <TD>
      <P>Hit Testing</P></TD>
    <TD>
      <P>在命中测试通过时发生，该测试确定已命中的可视化对象。</P></TD></TR>
  <TR>
    <TD>
      <P>AnimatedRenderMessageHandler (MediaContext)</P></TD>
    <TD>
      <P>启用了动画后，此处理程序将处理和更新动画，从而导致属性更改，并随后又导致呈现发生。</P></TD></TR>
  <TR>
    <TD>
      <P>Render (MediaContext)</P></TD>
    <TD>
      <P>在呈现传递过程中发生。此方法最终调用每个元素的 <SPAN sdata="langKeyword" 
      value="OnRender"><SPAN class=keyword>OnRender</SPAN></SPAN> 方法，并且对于了解所有元素的 
      <SPAN sdata="langKeyword" value="OnRender"><SPAN 
      class=keyword>OnRender</SPAN></SPAN> 总开销十分有用。此事件对应于 Visual Studio 探查器 
      (VSP) 文件中的 <SPAN sdata="langKeyword" value="MediaContext.Render"><SPAN 
      class=keyword>MediaContext.Render</SPAN></SPAN> 方法。</P></TD></TR>
  <TR>
    <TD>
      <P>FormatLineInternal (TextFormatterImp)</P></TD>
    <TD>
      <P>在设置文本格式时发生。</P></TD></TR>
  <TR>
    <TD>
      <P>MarkVisibleRealizations (Visual)</P></TD>
    <TD>
      <P>在检测文本的内部位图表示形式以及需要更新位图效果时发生。</P></TD></TR></TBODY></TABLE></DIV>
<P>您可以设置可视化探查器配置，以便允许或禁止分析下列元素事件：</P>
<DIV class=caption><!----></DIV>
<DIV class=tableSection>
<TABLE width="50%" frame=lhs>
  <TBODY>
  <TR>
    <TH>
      <P><B>元素事件</B></P></TH>
    <TH>
      <P><B>说明</B></P></TH></TR>
  <TR>
    <TD>
      <P>Layout</P></TD>
    <TD>
      <P>在度量、排列和呈现传递过程中发生。</P></TD></TR>
  <TR>
    <TD>
      <P>MarkVisibleRealizations (Visual)</P></TD>
    <TD>
      <P>在检测文本的内部位图表示形式以及需要更新位图效果时发生。</P></TD></TR>
  <TR>
    <TD>
      <P>UIElement.OnRender</P></TD>
    <TD>
      <P><SPAN sdata="langKeyword" value="UIElement"><SPAN 
      class=keyword>UIElement</SPAN></SPAN> 呈现操作。</P></TD></TR>
  <TR>
    <TD>
      <P>UIElement Layout</P></TD>
    <TD>
      <P><SPAN sdata="langKeyword" value="UIElement"><SPAN 
      class=keyword>UIElement</SPAN></SPAN> 布局操作。</P></TD></TR></TBODY></TABLE></DIV>
<P>选择完成应用程序和分析选项后，单击<SPAN class=ui>“OK”（确定）</SPAN>按钮开始分析应用程序。</P>
<P>并排运行应用程序和可视化探查器工具，并注意工具中变化的值。通过展开可视化树层次结构，您可以选择要分析的特定可视化对象，比如 Grid 
控件。可视化探查器的<SPAN class=ui>“CPU Usage”（CPU 使用率）</SPAN>部分使您可以清楚地了解对象和应用程序对 WPF 
服务的使用情况。元素的<SPAN class=ui>“CPU Utilization”（CPU 使用情况）</SPAN>数据列出了：</P>
<UL>
  <LI>
  <P><B>Inclusive Time（非独占时间）</B>：元素及其所有子代的 CPU 使用率。</P>
  <LI>
  <P><B>Exclusive Time（独占时间）</B>：仅显示元素的 CPU 使用率。</P></LI></UL><SPAN class=media>
<DIV class=caption>可视化探查器显示输出</DIV><BR><IMG alt=可视化探查器显示输出 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_VisualProfiler_04(zh-cn,VS.90).png"></SPAN>
<P>可视化探查器会在可视化树中的对象上覆盖不同的红色色调，以便表示对象正在使用的相对资源量。用暗红色覆盖显示的对象表示这样一个对象：它所使用的资源比例比用淡红色覆盖显示的对象高。</P></DIV></DIV></DIV></SPAN><A 
name=working_set_viewer><!----></A><SPAN>
<DIV class=MTPS_CollapsibleRegion>
<DIV class=CollapseRegionLink><!-- ApplyClick with current id --><IMG 
class=LibC_o 
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; VERTICAL-ALIGN: middle; BORDER-RIGHT-WIDTH: 0px" 
src="WPF 性能分析工具.files/clear.gif"> &nbsp;Working Set Analyzer（工作集分析器） </DIV>
<DIV class=MTPS_CollapsibleSection style="DISPLAY: block"><A 
name=sectionToggle3><!----></A>
<P>Working Set Analyzer（工作集分析器）是一种 WPF 
性能分析工具，提供有关指定进程的内存使用量信息。利用此工具，您可以生成特定应用程序状态时的应用程序内存使用量信息的快照。</P>
<H3 class=subHeading>应用程序的工作集</H3>
<DIV class=subsection>
<P>应用程序的工作集是应用程序的虚拟地址空间中最近被引用的页的集合。它包括共享数据和私有数据。共享数据包括那些包含应用程序执行的所有指令的页（包括您的 DLL 
和系统 DLL 中的页）。随着工作集大小的增加，内存需求也会增加。有关工作集的更多信息，请参见<A 
id=ctl00_mainContentContainer_ctl48_ctl00_ctl00 
onclick="javascript:Track('ctl00_mainContentContainer_ctl48_ctl00_contenthere|ctl00_mainContentContainer_ctl48_ctl00_ctl00',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/ms684891.aspx">进程工作集</A>。</P></DIV>
<H3 class=subHeading>虚拟地址转储 (VaDump) 实用工具</H3>
<DIV class=subsection>
<P>虚拟地址转储 (VaDump) 创建一个列表，其中包含有关指定进程的内存使用量的信息。此工具位于以下目录中：</P>
<P><SPAN class=code>~\Program Files\Microsoft Visual Studio 
8\Common7\Tools\Bin\winnt</SPAN></P>
<DIV class=alert>
<TABLE width="100%">
  <TBODY>
  <TR>
    <TH align=left><IMG class=note title=重要说明 
      src="WPF 性能分析工具.files/Aa969767.alert_caution(zh-cn,VS.90).gif"><B>重要说明：</B></TH></TR>
  <TR>
    <TD>
      <P>您必须确保系统执行路径包括 VaDump 的目录位置。否则，Working Set 
    Analyzer（工作集分析器）将无法正常工作。</P></TD></TR></TBODY></TABLE></DIV></DIV>
<H3 class=subHeading>使用 Working Set Analyzer（工作集分析器）</H3>
<DIV class=subsection>
<P>若要使用 Working Set Analyzer（工作集分析器），请启动想要分析的 WPF 应用程序。启动了 Working Set 
Analyzer（工作集分析器）后，请选择<SPAN class=ui>“Select Process”（选择进程）</SPAN>选项：</P><SPAN 
class=media>
<DIV class=caption>Working Set Analyzer（工作集分析器）的“Select 
Process”（选择进程）对话框</DIV><BR><IMG alt=工作集查看器主窗口 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_WorkingSet_01(zh-cn,VS.90).png"></SPAN>
<P>选择想要分析其工作集的进程；然后单击<SPAN class=ui>“Capture”（捕获）</SPAN>按钮。Working Set 
Analyzer（工作集分析器）首先调用 VaDump 来生成内存使用量信息。接着，它分析信息并以包含丰富图形的格式呈现信息。</P>
<DIV class=alert>
<TABLE width="100%">
  <TBODY>
  <TR>
    <TH align=left><IMG class=note title=说明 
      src="WPF 性能分析工具.files/Aa969767.alert_note(zh-cn,VS.90).gif"><B>说明：</B></TH></TR>
  <TR>
    <TD>
      <P>工作集数据表示内存使用量的静态视图。您可能需要在应用程序中不同的点生成若干组工作集数据，并比较内存使用量的差异。</P></TD></TR></TBODY></TABLE></DIV>
<P>当工作集数据可供查看时，Working Set Analyzer（工作集分析器）将生成一个表示动态数据、系统数据和应用程序模块的树视图。</P><SPAN 
class=media>
<DIV class=caption>Working Set Analyzer（工作集分析器）内存使用量类别</DIV><BR><IMG 
alt=工作集查看器使用率分类 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_WorkingSet_02(zh-cn,VS.90).png"></SPAN>
<P>对于 WPF 应用程序，WPF 的“Modules”（模块）类别包含 WPF 的系统特定模块。单击想要显示的类别，将会显示一组饼图。例如，如果单击 WPF 
的“Modules”（模块）类别，将会在窗口的左侧显示以下信息。</P><SPAN class=media>
<DIV class=caption>WPF 模块的 Working Set Analyzer（工作集分析器）内存使用量饼图</DIV><BR><IMG 
alt=工作集查看器内存使用饼图 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_WorkingSet_03(zh-cn,VS.90).png"></SPAN>
<P>顶部的标题显示工作集类别的总大小。在本例中，WPF 模块表示 9160KB 的内存使用量。此饼图表示定义 
WPF“Modules”（模块）类别的所有模块的个别内存使用量。</P>
<DIV class=alert>
<TABLE width="100%">
  <TBODY>
  <TR>
    <TH align=left><IMG class=note title=说明 
      src="WPF 性能分析工具.files/Aa969767.alert_note(zh-cn,VS.90).gif"><B>说明：</B></TH></TR>
  <TR>
    <TD>
      <P>内存使用量类别的大小反映捕获工作集信息时应用程序的内存使用量。</P></TD></TR></TBODY></TABLE></DIV>
<P>小表格表示共享字节、可共享字节及私有字节的内存使用量。</P><SPAN class=media>
<DIV class=caption>Working Set Analyzer（工作集分析器）内存使用量表格</DIV><BR><IMG 
alt=工作集查看器内存使用饼图 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_WorkingSet_03a(zh-cn,VS.90).png"></SPAN>
<P>共享字节类别表示可能由其他 WPF 应用程序共享的内存量。</P>
<H4 class=subHeading>查看应用程序存使用量</H4>
<DIV class=subsection>
<P>若要查看应用程序的内存使用量，请从工作集树视图的“Other Modules”（其他模块）类别中选择可执行文件的名称。</P><SPAN 
class=media>
<DIV class=caption>Working Set Analyzer（工作集分析器）内存使用量类别</DIV><BR><IMG 
alt=工作集查看器使用率分类 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_WorkingSet_05(zh-cn,VS.90).png"></SPAN></DIV></DIV>
<H3 class=subHeading>保存和重新加载 Working Set Analyzer（工作集分析器）文件</H3>
<DIV class=subsection>
<P>若要保存当前工作集使用情况信息，请从 Working Set Analyzer（工作集分析器）的主菜单中选择“File”（文件）。然后，单击<SPAN 
class=ui>“Save VADump output”（保存 VADump 输出）</SPAN>按钮。保存了工作集使用情况信息后，您可以通过单击<SPAN 
class=ui>“Capture”（捕获）</SPAN>按钮生成另一个内存使用量快照。若要重新加载包含 VADump 内容的文件，请从 Working Set 
Analyzer（工作集分析器）的主菜单中选择“File”（文件）。然后，单击<SPAN class=ui>“Open VADump output”（打开 
VADump 输出）</SPAN>按钮。</P></DIV>
<H3 class=subHeading>使用计时器延迟来捕获工作集信息</H3>
<DIV class=subsection>
<P>Working Set Analyzer（工作集分析器）提供了时延功能，您可以利用该功能在指定的时间间隔后捕获工作集使用情况信息。从 Working 
Set Analyzer（工作集分析器）的主菜单中选择<SPAN class=ui>“Actions”（操作）</SPAN>。然后，单击<SPAN 
class=ui>“Launch Process…”（启动进程…）</SPAN>按钮。</P>
<P>使用<SPAN 
class=ui>“Browse”（浏览）</SPAN>按钮（如果需要）指定要运行的应用程序。接着，为应用程序输入任何参数。最后，输入在捕获内存使用量信息前要延迟的秒数。然后，单击<SPAN 
class=ui>“Launch”（启动）</SPAN>按钮。Working Set 
Analyzer（工作集分析器）底部的状态文本将倒数进行捕获之前的剩余秒数，这样将可为您留出时间来修改应用程序的状态。捕获完成后，状态文本将显示“Done”（完成）。</P></DIV></DIV></DIV></SPAN><A 
name=event_trace><!----></A><SPAN>
<DIV class=MTPS_CollapsibleRegion>
<DIV class=CollapseRegionLink><!-- ApplyClick with current id --><IMG 
class=LibC_o 
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; VERTICAL-ALIGN: middle; BORDER-RIGHT-WIDTH: 0px" 
src="WPF 性能分析工具.files/clear.gif"> &nbsp;Event Trace（事件跟踪） </DIV>
<DIV class=MTPS_CollapsibleSection style="DISPLAY: block"><A 
name=sectionToggle4><!----></A>
<P>Windows 事件跟踪 (ETW) 
是一种高效的内核级别跟踪工具，它使您能够将内核或应用程序定义的事件记录到日志文件。您可以在实时或从日志文件中使用事件，并使用它们来调试应用程度或确定应用程序中何处发生了性能问题。WPF 
事件跟踪分析工具使用 ETW 来记录事件。有关 ETW 的更多信息，请参见<A 
id=ctl00_mainContentContainer_ctl49_ctl00_ctl00 
onclick="javascript:Track('ctl00_mainContentContainer_ctl49_ctl00_contenthere|ctl00_mainContentContainer_ctl49_ctl00_ctl00',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/aa363787.aspx">事件跟踪</A>。</P>
<P>“Event Trace”（事件跟踪）是 WPF 性能分析工具套件 WPFPerf (WpfPerf.exe) 的一部分。有关更多信息，请参见<A 
href="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx#using_performance_profiling_tools">使用性能分析工具</A>部分。</P>
<H3 class=subHeading>使用 Event Trace（事件跟踪）</H3>
<DIV class=subsection>
<P>“Event Trace”（事件跟踪）的主窗口显示一组选项，您可以利用这些选项来添加、保存和查看事件日志记录信息：</P><SPAN 
class=media>
<DIV class=caption>“Event Trace”（事件跟踪）的主窗口</DIV><BR><IMG alt=“事件跟踪”主窗口 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_EventTrace_01(zh-cn,VS.90).png"></SPAN>
<H4 class=subHeading>添加新事件记录器</H4>
<DIV class=subsection>
<P>若要添加新事件记录器，请从“Event Trace”（事件跟踪）的主窗口中单击<SPAN 
class=ui>“Add”（添加）</SPAN>按钮。<SPAN class=ui>“Add New 
Logger”（添加新记录器）</SPAN>对话框显示供您定义的一组信息。<SPAN class=ui>“Logger 
Name”（记录器名称）</SPAN>指记录器的用户友好名称。从标记为<SPAN 
class=ui>“GUID”</SPAN>的下拉列表框中选择下列四种事件记录器之一：</P>
<UL>
  <LI>
  <P>NT Kernel Logger（NT 内核记录器）</P>
  <LI>
  <P>Common Language Runtime Garbage Collection（公共语言运行时垃圾回收）</P>
  <LI>
  <P>Windows Presentation Foundation - Performance Only（Windows Presentation 
  Foundation - 仅限性能）</P>
  <LI>
  <P>Windows Presentation Foundation -All（Windows Presentation Foundation - 
  全部）</P></LI></UL>
<P>有两种类型的 WPF 事件记录器。“仅限性能”版本是“全部”版本的简化子集。<SPAN class=ui>“Log 
File”（日志文件）</SPAN>允许您定义事件日志文件的文件名。单击标记为“…”的按钮定义文件名。事件日志文件使用默认文件扩展名“etl”。</P>
<P><SPAN class=ui>“Level”（级别）</SPAN>选项是指您可以使用的以下安全级别。较高的数字表示您还可以获取较低的级别。例如，如果您指定 
3，则您还会收到所有警告、错误和致命事件：</P>
<DIV class=caption><!----></DIV>
<DIV class=tableSection>
<TABLE width="50%" frame=lhs>
  <TBODY>
  <TR>
    <TH>
      <P><B>级别</B></P></TH>
    <TH>
      <P><B>说明</B></P></TH></TR>
  <TR>
    <TD>
      <P>1</P></TD>
    <TD>
      <P>异常退出或终止事件。</P></TD></TR>
  <TR>
    <TD>
      <P>2</P></TD>
    <TD>
      <P>严重错误事件。</P></TD></TR>
  <TR>
    <TD>
      <P>3</P></TD>
    <TD>
      <P>诸如分配失败等警告事件。</P></TD></TR>
  <TR>
    <TD>
      <P>4</P></TD>
    <TD>
      <P>非错误事件，比如进入或退出事件。</P></TD></TR>
  <TR>
    <TD>
      <P>5</P></TD>
    <TD>
      <P>详细跟踪事件。</P></TD></TR></TBODY></TABLE></DIV>
<P><SPAN class=ui>“Flags”（标志）</SPAN>选项指定 WPF 事件的分类。大多数情况下，默认值就已足够。</P>
<P>创建完新事件日志记录信息后，单击<SPAN class=ui>“Add New Logger”（添加新记录器）</SPAN>对话框的<SPAN 
class=ui>“Add”（添加）</SPAN>按钮，以将记录器添加到“Event Trace”（事件跟踪）。可以创建更多事件记录器并将它们添加到“Event 
Trace”（事件跟踪）。添加完所有事件记录器后，单击<SPAN class=ui>“Done”（完成）</SPAN>按钮。</P><SPAN 
class=media>
<DIV class=caption>“Add New Logger”（添加新记录器）对话框</DIV><BR><IMG alt=“添加新记录器”对话框 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_EventTrace_02(zh-cn,VS.90).png"></SPAN>
<P>若要移除特定事件记录器，请在列表框中选择事件记录器，并单击<SPAN 
class=ui>“Remove”（移除）</SPAN>按钮。若要移除所有事件记录器，请单击<SPAN 
class=ui>“Clear”（清除）</SPAN>按钮。</P></DIV>
<H4 class=subHeading>启用事件日志记录</H4>
<DIV class=subsection>
<P>从“Event Trace”（事件跟踪）主窗口的事件记录器列表中选择事件记录器。单击<SPAN 
class=ui>“Start”（启动）</SPAN>按钮以启用日志记录。事件记录器的状态应显示为“Enabled”（启用）。</P><SPAN 
class=media>
<DIV class=caption>已选中一个事件记录器的“Event Trace”（事件跟踪）主窗口</DIV><BR><IMG 
alt=包含事件记录器的“事件跟踪”主窗口 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_EventTrace_03(zh-cn,VS.90).png"></SPAN>
<P>记录完应用程序的事件后，单击<SPAN 
class=ui>“Stop”（停止）</SPAN>按钮。为了确保已捕获了事件日志记录信息，您可能需要查看事件日志文件。单击<SPAN 
class=ui>“Open Log”（打开日志）</SPAN>按钮以查看事件日志文件。</P><SPAN class=media>
<DIV class=caption>包含事件日志信息的“Event Trace”（事件跟踪）主窗口</DIV><BR><IMG 
alt=包含事件记录信息的“事件跟踪”主窗口 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_EventTrace_04(zh-cn,VS.90).png"></SPAN>
<P>事件日志文件为每个事件列出五列信息。</P>
<DIV class=caption><!----></DIV>
<DIV class=tableSection>
<TABLE width="50%" frame=lhs>
  <TBODY>
  <TR>
    <TH>
      <P><B>列</B></P></TH>
    <TH>
      <P><B>说明</B></P></TH></TR>
  <TR>
    <TD>
      <P>Time（时间）</P></TD>
    <TD>
      <P>CPU 计时周期中的当前时间。</P></TD></TR>
  <TR>
    <TD>
      <P>Guid</P></TD>
    <TD>
      <P>对应于事件的 GUID。</P></TD></TR>
  <TR>
    <TD>
      <P>Name（名称）</P></TD>
    <TD>
      <P>事件名称。</P></TD></TR>
  <TR>
    <TD>
      <P>Event Type（事件类型）</P></TD>
    <TD>
      <P>Info、Start 或 End 事件。Start 事件有匹配的 End 事件。</P></TD></TR>
  <TR>
    <TD>
      <P>Data（数据）</P></TD>
    <TD>
      <P>与特定事件类型相关的数据。</P></TD></TR></TBODY></TABLE></DIV>
<P>此格式的事件日志信息不十分有用。请使用 WPF<A 
href="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx#etw_trace_viewer">ETW 
Trace Viewer</A>（ETW 跟踪查看器）分析工具来分析用“Event 
Trace”（事件跟踪）创建的事件日志文件的输出。</P></DIV></DIV></DIV></DIV></SPAN><A 
name=etw_trace_viewer><!----></A><SPAN>
<DIV class=MTPS_CollapsibleRegion>
<DIV class=CollapseRegionLink><!-- ApplyClick with current id --><IMG 
class=LibC_o 
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; VERTICAL-ALIGN: middle; BORDER-RIGHT-WIDTH: 0px" 
src="WPF 性能分析工具.files/clear.gif"> &nbsp;ETW Trace Viewer（ETW 跟踪查看器） </DIV>
<DIV class=MTPS_CollapsibleSection style="DISPLAY: block"><A 
name=sectionToggle5><!----></A>
<P>Windows 事件跟踪 (ETW) 提供了一种机制，用于跟踪和记录用户模式应用程序引发的事件。ETW 在 Windows 
操作系统中实现，为开发人员提供了一组快速、可靠而通用的事件跟踪功能。“Event Trace”（事件跟踪）工具允许您用特定于 WPF 
的用户界面格式记录、显示和浏览 ETW 日志文件。</P><SPAN class=media>
<DIV class=caption>“ETW 跟踪查看”主窗口</DIV><BR><IMG alt=“跟踪视图”主窗口 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_TraceView_01(zh-cn,VS.90).png"></SPAN>
<H3 class=subHeading>使用 ETW Trace Viewer（ETW 跟踪查看器）</H3>
<DIV class=subsection>
<P>您可以使用 WPF<A 
href="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx#event_trace">Event 
Trace</A>（事件跟踪）分析工具来查看创建和保存的 ETW 日志文件。事件日志文件使用默认文件扩展名“etl”。从 ETW Trace 
Viewer（ETW 跟踪查看器）的主菜单中选择<SPAN class=ui>“File”（文件）</SPAN>。然后，单击<SPAN 
class=ui>“Open”（打开）</SPAN>加载所需的日志文件。</P><SPAN class=media>
<DIV class=caption>包含日志文件的 ETW Trace Viewer（ETW 跟踪查看器）主窗口</DIV><BR><IMG 
alt=具有事件日志的“跟踪视图”主窗口 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_TraceView_02(zh-cn,VS.90).png"></SPAN>
<P>加载了日志文件后，ETW Trace Viewer（ETW 
跟踪查看器）将显示一条表示事件日志捕获持续时间的时间线。您可以将时间线的度量单位更改为秒或毫秒。通过启用或禁用特定事件类型，您可以选择要查看哪些类型的事件。如果希望查看少量的事件类型，您可以单击<SPAN 
class=ui>“Disable All”（全部禁用）</SPAN>按钮以禁用所有事件，然后单击想要启用的事件的复选框。为时间线启用的事件类型显示在 ETW 
Trace Viewer（ETW 跟踪查看器）的右下角。</P>
<P>您可以在时间线上单击并拖动鼠标，以便只查看在时间线的选定区域过程中发生的那些事件。若要放大时间线的选定区域，请右击以显示以下屏幕快照中所示的弹出菜单。</P><SPAN 
class=media>
<DIV class=caption>包含弹出菜单的 ETW Trace Viewer（ETW 跟踪查看器）主窗口</DIV><BR><IMG 
alt=具有事件日志的“跟踪视图”主窗口 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_TraceView_03(zh-cn,VS.90).png"></SPAN>
<P>利用该弹出菜单可以放大和缩小时间线，以及显示所有事件和清除时间线的当前选定区域。当您放大时间线时，显示为蓝色的时间间隔指示放大的时间线的长度。显示在下方的黑色时间间隔指示相对于事件日志捕获总体持续时间的时间。</P><SPAN 
class=media>
<DIV class=caption>包含放大的数据的 ETW Trace Viewer（ETW 跟踪查看器）主窗口</DIV><BR><IMG 
alt=具有事件日志的“跟踪视图”主窗口 
src="WPF 性能分析工具.files/Aa969767.WPFPerf_TraceView_04(zh-cn,VS.90).png"></SPAN>
<P>
<P>您可以单击时间线上的小框来显示有关特定事件的信息。</P>
<H4 class=subHeading>生成事件日志文件</H4>
<DIV class=subsection>
<P>您也可以使用 ETW Trace Viewer（ETW 跟踪查看器）创建 ETW 日志文件，方法是单击<SPAN class=ui>“Start 
capture”（开始捕获）</SPAN>按钮开始事件日志记录，并单击<SPAN class=ui>“Stop 
capture”（停止捕获）</SPAN>按钮结束事件日志记录。使用此方法生成的事件记录器不允许自定义用于筛选事件的设置。使用<A 
href="http://msdn.microsoft.com/zh-cn/architecture/aa969767.aspx#event_trace">Event 
Trace</A>（事件跟踪）工具来创建自定义事件记录器。</P></DIV></DIV></DIV></DIV></SPAN><A 
name=other_performance_tool_resources><!----></A><SPAN>
<DIV class=MTPS_CollapsibleRegion>
<DIV class=CollapseRegionLink><!-- ApplyClick with current id --><IMG 
class=LibC_o 
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; VERTICAL-ALIGN: middle; BORDER-RIGHT-WIDTH: 0px" 
src="WPF 性能分析工具.files/clear.gif"> &nbsp;其他性能工具资源 </DIV>
<DIV class=MTPS_CollapsibleSection style="DISPLAY: block"><A 
name=sectionToggle6><!----></A>
<P>Windows Presentation Foundation (WPF) 还支持调试跟踪。</P>
<H3 class=subHeading>WPF 调试跟踪支持</H3>
<DIV class=subsection>
<P><SPAN target="T:System.Diagnostics.PresentationTraceSources" sdata="cer"><A 
id=ctl00_mainContentContainer_ctl51_ctl00_ctl00 
onclick="javascript:Track('ctl00_mainContentContainer_ctl51_ctl00_contenthere|ctl00_mainContentContainer_ctl51_ctl00_ctl00',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/system.diagnostics.presentationtracesources.aspx">PresentationTraceSources</A></SPAN> 
类为 Windows Presentation Foundation (WPF) 
应用程序提供调试跟踪支持。跟踪是一种诊断体系，可以通过该体系来跟踪应用程序的进度。跟踪语句报告信息，就像通常使用 <SPAN 
target="M:System.Console.WriteLine" sdata="cer"><A 
id=ctl00_mainContentContainer_ctl51_ctl00_ctl01 
onclick="javascript:Track('ctl00_mainContentContainer_ctl51_ctl00_contenthere|ctl00_mainContentContainer_ctl51_ctl00_ctl01',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/system.console.writeline.aspx">WriteLine</A></SPAN> 
方法一样。但是，可以通过使用配置文件来打开或关闭跟踪语句。此外，还可以自定义跟踪语句的输出。</P>
<P>有关其他相关的 .NET Framework 诊断类，请参见 <SPAN target="N:System.Diagnostics" 
sdata="cer"><A id=ctl00_mainContentContainer_ctl51_ctl00_ctl02 
onclick="javascript:Track('ctl00_mainContentContainer_ctl51_ctl00_contenthere|ctl00_mainContentContainer_ctl51_ctl00_ctl02',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/system.diagnostics.aspx">System.Diagnostics</A></SPAN>。</P></DIV></DIV></DIV></SPAN><SPAN>
<DIV class=MTPS_CollapsibleRegion>
<DIV class=CollapseRegionLink><!-- ApplyClick with current id --><IMG 
class=LibC_o 
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; VERTICAL-ALIGN: middle; BORDER-RIGHT-WIDTH: 0px" 
src="WPF 性能分析工具.files/clear.gif"> &nbsp;请参见 </DIV>
<DIV class=MTPS_CollapsibleSection style="DISPLAY: block"><A name=seeAlsoToggle><!----></A>
<H4 class=subHeading>概念</H4>
<DIV class=seeAlsoStyle><SPAN sdata="link"><A 
id=ctl00_mainContentContainer_ctl52_ctl00_ctl00 
onclick="javascript:Track('ctl00_mainContentContainer_ctl52_ctl00_contenthere|ctl00_mainContentContainer_ctl52_ctl00_ctl00',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/aa970683.aspx">优化 WPF 
应用程序性能</A></SPAN></DIV>
<DIV class=seeAlsoStyle><SPAN sdata="link"><A 
id=ctl00_mainContentContainer_ctl52_ctl00_ctl01 
onclick="javascript:Track('ctl00_mainContentContainer_ctl52_ctl00_contenthere|ctl00_mainContentContainer_ctl52_ctl00_ctl01',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/ms742196.aspx">图形呈现层</A></SPAN></DIV>
<DIV class=seeAlsoStyle><SPAN sdata="link"><A 
id=ctl00_mainContentContainer_ctl52_ctl00_ctl02 
onclick="javascript:Track('ctl00_mainContentContainer_ctl52_ctl00_contenthere|ctl00_mainContentContainer_ctl52_ctl00_ctl02',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/ms748373.aspx">Windows 
Presentation Foundation 图形呈现概述</A></SPAN></DIV>
<DIV class=seeAlsoStyle><SPAN sdata="link"><A 
id=ctl00_mainContentContainer_ctl52_ctl00_ctl03 
onclick="javascript:Track('ctl00_mainContentContainer_ctl52_ctl00_contenthere|ctl00_mainContentContainer_ctl52_ctl00_ctl03',this);" 
href="http://msdn.microsoft.com/zh-cn/architecture/ms727247.aspx">UI Spy 
(UISpy.exe)</A></SPAN></DIV></DIV></DIV></SPAN></DIV></DIV></DIV></DIV><SPAN 
id=CommunityContent></SPAN>
<DIV class=CCS_Container id=ctl00_WikiContent_cc>
<DIV class=CCS_TopicTagEditor>
<DIV class=CCT_Panel id=ctl00_WikiContent_TopicTagEditor_panel>
<DIV class=CCT_TagsPanel id=tagsPanel><SPAN class=CCT_Title 
id=ctl00_WikiContent_TopicTagEditor_title>标记</SPAN> <A class=CCT_HelpLink 
id=ctl00_WikiContent_TopicTagEditor_helpLink 
onclick='CCS_ShowHelp("/platform/Controls/CCTagEditor/resources/taghelp.zh-cn.htm",800,600);return false;' 
href="http://msdn.microsoft.com/platform/Controls/CCTagEditor/resources/taghelp.zh-cn.htm"><IMG 
class="CCT_HelpImage LibC_help" id=ctl00_WikiContent_TopicTagEditor_helpImage 
title=这是什么？ alt=这是什么？ src="WPF 性能分析工具.files/clear.gif"></A>: <SPAN 
class=CCT_Text id=ctl00_WikiContent_TopicTagEditor_tags></SPAN><SPAN 
class=CCT_View id=ctl00_WikiContent_TopicTagEditor_view><A class=CCT_LinkButton 
id=ctl00_WikiContent_TopicTagEditor_addTagLink title=向本主题添加标记 
onclick='return CCT_AddATag("http://msdn.microsoft.com/zh-cn/architecture/Community-Signup.aspx?ru=http%3a%2f%2fmsdn.microsoft.com%2fzh-cn%2farchitecture%2faa969767(VS.90).aspx",-1);' 
href="http://msdn.microsoft.com/Platform/Controls/CCTagEditor/#">添加标记</A> 
</SPAN><SPAN class=CCT_Edit id=ctl00_WikiContent_TopicTagEditor_editPanel 
style="DISPLAY: none"><INPUT class=CCT_TextBox 
id=ctl00_WikiContent_TopicTagEditor_textbox 
name=ctl00$WikiContent$TopicTagEditor$textbox autocomplete="off"> <A 
class=CCT_LinkButton id=ctl00_WikiContent_TopicTagEditor_addLink title=提交本主题的标记 
onclick="return CCT_AddTags(-1);" 
href="http://msdn.microsoft.com/Platform/Controls/CCTagEditor/#">添加</A> &nbsp; 
<A class=CCT_LinkButton id=ctl00_WikiContent_TopicTagEditor_cancelLink 
title=取消此操作 onclick="return CCT_CancelAddTag(-1);" 
href="http://msdn.microsoft.com/Platform/Controls/CCTagEditor/#">取消</A> 
</SPAN><SPAN class=CCT_Message 
id=ctl00_WikiContent_TopicTagEditor_messagePanel></SPAN></DIV>
<DIV class=CCT_FlagAsPanel id=ctl00_WikiContent_TopicTagEditor_flagAsPanel 
style="DISPLAY: none"><SPAN id=ctl00_WikiContent_TopicTagEditor_flagAsLabel>标记为 
</SPAN><A class=CCT_LinkButton 
id=ctl00_WikiContent_TopicTagEditor_contentBugLink 
title="将此注释标记为 'ContentBug'，作者就知道需要查看这个主题" 
onclick='return CCT_FlagContentBug("http://msdn.microsoft.com/zh-cn/architecture/Community-Signup.aspx?ru=http%3a%2f%2fmsdn.microsoft.com%2fzh-cn%2farchitecture%2faa969767(VS.90).aspx",-1);' 
href="http://msdn.microsoft.com/Platform/Controls/CCTagEditor/#">ContentBug</A> 
</DIV>
<DIV style="CLEAR: both"></DIV></DIV></DIV>
<DIV class=CCS_WikiLogo><IMG class=LibC_wiki id=ctl00_WikiContent_wikiLogo 
style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" 
src="WPF 性能分析工具.files/clear.gif"> </DIV>
<DIV class=CCS_ContentContainer id=ctl00_WikiContent_contentContainer>
<DIV class=CCS_HeaderContainer id=ctl00_WikiContent_headerContainer>
<TABLE class=CCS_Header cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD>
      <DIV class=CCS_HeaderTitle><SPAN 
      id=ctl00_WikiContent_headerTitle>社区内容</SPAN>&nbsp;&nbsp; <A 
      class=CCS_HelpLink id=ctl00_WikiContent_helpLink 
      onclick='CCS_ShowHelp("/platform/Controls/CCSection/resources/cchelp.zh-cn.htm",400,400);return false;' 
      href="http://msdn.microsoft.com/platform/Controls/CCSection/resources/cchelp.zh-cn.htm"><IMG 
      class="CCS_HelpImage  LibC_help" id=ctl00_WikiContent_helpImage 
      title=什么是社区内容？ alt=什么是社区内容？ src="WPF 性能分析工具.files/clear.gif"></A> 
  </DIV></TD></TR></TBODY></TABLE>
<TABLE class=CCS_Toolbar cellSpacing=0 cellPadding=0 width="100%" border=0>
  <TBODY>
  <TR>
    <TD class=CCS_Add><A class=CCS_Link id=ctl00_WikiContent_Add 
      href='javascript:WebForm_DoPostBackWithOptions(new%20WebForm_PostBackOptions("ctl00$WikiContent$Add",%20"",%20false,%20"",%20"http://msdn.microsoft.com/zh-cn/architecture/Community-Signup.aspx?ru=http%3a%2f%2fmsdn.microsoft.com%2fzh-cn%2farchitecture%2faa969767(VS.90).aspx%3fwbi%3dnew", false, true))'>添加新内容</A> 
    </TD>
    <TD class=CCS_RecentChanges><A id=ctl00_WikiContent_recentPageLink 
      href="http://msdn.microsoft.com/zh-cn/architecture/community-edits.rss?topic=aa969767|zh-cn|90"><IMG 
      class="CCS_RSSImage LibC_rss_button" id=ctl00_WikiContent_imageRSS 
      style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" 
      alt=RSS src="WPF 性能分析工具.files/clear.gif" align=middle></A>&nbsp; <SPAN 
      class=CCS_RecentChangesText 
      id=ctl00_WikiContent_recentChangesTitle>批注</SPAN> </TD>
    <TD class=CCS_Profile align=right></TD></TR></TBODY></TABLE></DIV>
<DIV class=CCS_ItemsContainer id=ctl00_WikiContent_wikiItems>
<DIV id=ctl00_WikiContent_ctl00_ItemUpdatePanel>
<DIV class=CCI_Container id=ctl00_WikiContent_ctl00_Container 
style="DISPLAY: none">
<DIV class=CCI_Header id=ctl00_WikiContent_ctl00_Header>
<TABLE cellSpacing=0 cellPadding=0 width="100%">
  <TBODY>
  <TR>
    <TD align=left><SPAN class=CCI_Header_Title 
      id=ctl00_WikiContent_ctl00_HeaderTitle></SPAN></TD>
    <TD><SPAN class=CCI_Header_Spacer 
      id=ctl00_WikiContent_ctl00_Label2>&nbsp;&nbsp;&nbsp;&nbsp;</SPAN> </TD>
    <TD class=CCI_Header_Actions align=right><SPAN 
      id=ctl00_WikiContent_ctl00_EditInfo></SPAN><SPAN 
      id=ctl00_WikiContent_ctl00_Separator>&nbsp;&nbsp;|&nbsp;&nbsp; 
      </SPAN><SPAN id=ctl00_WikiContent_ctl00_EditLabel><A class=CCI_Header_Link 
      id=ctl00_WikiContent_ctl00_Edit title=编辑此版本 
      href="javascript:__doPostBack('ctl00$WikiContent$ctl00$Edit','')">编辑</A></SPAN><INPUT 
      id=ctl00_WikiContent_ctl00_showhistoryFlag style="DISPLAY: none" 
      value=false name=ctl00$WikiContent$ctl00$showhistoryFlag> 
</TD></TR></TBODY></TABLE></DIV>
<DIV class=CCI_Text id=ctl00_WikiContent_ctl00_EditorPanel 
style="CURSOR: default">
<DIV 
onkeypress="javascript:return WebForm_FireDefaultButton(event, 'ctl00_WikiContent_ctl00_Editor_Save')" 
id=ctl00_WikiContent_ctl00_Editor_Container>
<DIV class=" CCE_Editor_Disabled" id=ctl00_WikiContent_ctl00_Editor_RadEditor 
title=按兩下以編輯這個區塊 
style="WIDTH: auto; HEIGHT: auto"><!-- 2008.2.723.35 --></DIV><INPUT 
id=ctl00_WikiContent_ctl00_Editor_editorData type=hidden 
name=ctl00$WikiContent$ctl00$Editor$editorData> <INPUT 
id=ctl00_WikiContent_ctl00_Editor_tagEditorData type=hidden 
name=ctl00$WikiContent$ctl00$Editor$tagEditorData> </DIV></DIV>
<DIV class=CCT_Panel id=ctl00_WikiContent_ctl00_TagEditor_panel>
<DIV class=CCT_TagsPanel id=tagsPanel><SPAN class=CCT_Title 
id=ctl00_WikiContent_ctl00_TagEditor_title>标记</SPAN> <A class=CCT_HelpLink 
id=ctl00_WikiContent_ctl00_TagEditor_helpLink 
onclick='CCS_ShowHelp("/platform/Controls/CCTagEditor/resources/taghelp.zh-cn.htm",800,600);return false;' 
href="http://msdn.microsoft.com/platform/Controls/CCTagEditor/resources/taghelp.zh-cn.htm"><IMG 
class="CCT_HelpImage LibC_help" id=ctl00_WikiContent_ctl00_TagEditor_helpImage 
title=这是什么？ alt=这是什么？ src="WPF 性能分析工具.files/clear.gif"></A>: <SPAN 
class=CCT_Text id=ctl00_WikiContent_ctl00_TagEditor_tags></SPAN><SPAN 
class=CCT_View id=ctl00_WikiContent_ctl00_TagEditor_view><A class=CCT_LinkButton 
id=ctl00_WikiContent_ctl00_TagEditor_addTagLink title=向本主题添加标记 
href="http://msdn.microsoft.com/Platform/Controls/CCTagEditor/#">添加标记</A> 
</SPAN><SPAN class=CCT_Edit id=ctl00_WikiContent_ctl00_TagEditor_editPanel 
style="DISPLAY: none"><INPUT class=CCT_TextBox 
id=ctl00_WikiContent_ctl00_TagEditor_textbox 
name=ctl00$WikiContent$ctl00$TagEditor$textbox autocomplete="off"> <A 
class=CCT_LinkButton id=ctl00_WikiContent_ctl00_TagEditor_addLink title=提交本主题的标记 
href="http://msdn.microsoft.com/Platform/Controls/CCTagEditor/#">添加</A> &nbsp; 
<A class=CCT_LinkButton id=ctl00_WikiContent_ctl00_TagEditor_cancelLink 
title=取消此操作 
href="http://msdn.microsoft.com/Platform/Controls/CCTagEditor/#">取消</A> 
</SPAN><SPAN class=CCT_Message 
id=ctl00_WikiContent_ctl00_TagEditor_messagePanel></SPAN></DIV>
<DIV class=CCT_FlagAsPanel id=ctl00_WikiContent_ctl00_TagEditor_flagAsPanel 
style="DISPLAY: none"><SPAN id=ctl00_WikiContent_ctl00_TagEditor_flagAsLabel>标记为 
</SPAN><A class=CCT_LinkButton 
id=ctl00_WikiContent_ctl00_TagEditor_contentBugLink 
title="将此注释标记为 'ContentBug'，作者就知道需要查看这个主题" 
onclick='return CCT_FlagContentBug("http://msdn.microsoft.com/zh-cn/architecture/Community-Signup.aspx?ru=http%3a%2f%2fmsdn.microsoft.com%2fzh-cn%2farchitecture%2faa969767(VS.90).aspx",-1);' 
href="http://msdn.microsoft.com/Platform/Controls/CCTagEditor/#">ContentBug</A> 
</DIV>
<DIV style="CLEAR: both"></DIV></DIV></DIV></DIV></DIV>
<DIV class=CCI_Container_Edit id=ctl00_WikiContent_EditorPanel 
style="DISPLAY: none">
<DIV 
onkeypress="javascript:return WebForm_FireDefaultButton(event, 'ctl00_WikiContent_Editor_Save')" 
id=ctl00_WikiContent_Editor_Container>
<DIV class=" CCE_Editor_Disabled" id=ctl00_WikiContent_Editor_RadEditor 
title=按兩下以編輯這個區塊 style="WIDTH: auto; HEIGHT: auto"></DIV><INPUT 
id=ctl00_WikiContent_Editor_editorData type=hidden 
name=ctl00$WikiContent$Editor$editorData> <INPUT 
id=ctl00_WikiContent_Editor_tagEditorData type=hidden 
name=ctl00$WikiContent$Editor$tagEditorData> </DIV></DIV>
<DIV class=CCS_Progress id=ProgressIndicator><IMG class=LibC_spinner 
id=ctl00_WikiContent_progressImage alt=Processing 
src="WPF 性能分析工具.files/clear.gif"> </DIV>
<DIV class=CCS_Footer></DIV></DIV></DIV>
<DIV class=MsdnPage_ContentInclude id=ctl00_FooterAd align=center>
<DIV>
<DIV>
<DIV class=navpage></DIV></DIV></DIV></DIV></DIV></DIV></DIV>
<DIV class=Clearbottom></DIV>
<DIV class=bottomleftcorner></DIV>
<DIV class=bottomrightcorner></DIV>
<DIV id=Footer>
<DIV class=FooterLinks>
<DIV id=ctl00_Footer_SiteLinks><A id=ctl00_Footer_LocalFooterLink0 title=个人信息中心 
href="http://go.microsoft.com/?linkid=8786242&amp;lcid=2052">个人信息中心</A><SPAN 
class=Pipe>|</SPAN><A id=ctl00_Footer_LocalFooterLink1 title=法律信息 
href="http://www.microsoft.com/legal/">法律信息</A><SPAN class=Pipe>|</SPAN><A 
id=ctl00_Footer_LocalFooterLink2 title="MSDN Flash 中心" 
href="http://www.microsoft.com/china/msdn/newsletter/default.aspx">MSDN Flash 
中心</A><SPAN class=Pipe>|</SPAN><A id=ctl00_Footer_LocalFooterLink3 title=联系我们 
href="mailto:msdnonln@microsoft.com">联系我们</A> </DIV><SPAN class=FooterCopyright 
id=ctl00_Footer_Copyright title="© 2010  Microsoft Corporation 版权所有。 ">© 2010 
Microsoft Corporation 版权所有。 </SPAN><A id=ctl00_Footer_Terms title=保留所有权利 
href="http://msdn.microsoft.com/zh-cn/cc300389.aspx">保留所有权利</A> <SPAN 
class=Pipe>|</SPAN> <A id=ctl00_Footer_Trademarks title=商标 
href="http://www.microsoft.com/library/toolbar/3.0/trademarks/zh-cn.mspx">商标</A> 
<SPAN class=Pipe>|</SPAN> <A id=ctl00_Footer_PrivacyStatement title=隐私权声明 
href="http://www.microsoft.com/info/cn/privacy.mspx">隐私权声明</A> <A 
id=ctl00_Footer_Feedback target=_blank 
rel=sitefeedback></A></DIV></DIV></DIV></DIV></DIV></DIV>
<DIV style="DISPLAY: none"><IMG height=0 alt="Page view tracker" hspace=0 
src="WPF 性能分析工具.files/trans_pixel.gif" width=0 border=0></DIV>
<SCRIPT src="WPF 性能分析工具.files/webtrendsscript-bn20091211.js" 
type=text/javascript></SCRIPT>
<NOSCRIPT>
<DIV><IMG id=Img1 height=1 alt=DCSIMG src="WPF 性能分析工具.files/njs.gif" 
width=1></DIV></NOSCRIPT>
<SCRIPT src="WPF 性能分析工具.files/CAL4QHDN.js" type=text/javascript></SCRIPT>

<SCRIPT type=text/javascript>
//<![CDATA[
var CCT_Controls =  new Array({id:-1,prefix:'ctl00_WikiContent_TopicTagEditor_'}, {id:-2,prefix:'ctl00_WikiContent_ctl00_TagEditor_'});
var CCE_EditorInfo =  new Array({i:-2,p:'ctl00_WikiContent_ctl00_Editor_',c:'ctl00_WikiContent_ctl00_'}, {i:-1,p:'ctl00_WikiContent_Editor_',c:''});
//]]>
</SCRIPT>

<SCRIPT type=text/javascript>
//<![CDATA[
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(CCS_BeginRequestHandler);Sys.WebForms.PageRequestManager.getInstance().add_endRequest(CCS_EndRequestHandler);CCT_Init("false","http%3a%2f%2fmsdn.microsoft.com%2fzh-cn%2farchitecture%2faa969767.aspx");$addHandler($get("ctl00_WikiContent_TopicTagEditor_editPanel"),"keydown",CCT_KeyDown);Sys.Application.initialize();
//]]>
</SCRIPT>
</FORM>
<SCRIPT language=javascript src="WPF 性能分析工具.files/broker.js" 
type=text/javascript></SCRIPT>
</BODY></HTML>
